home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 138
/
Volume 138 Aug 19 2011 - Damaged.iso
/
Games
/
shadez.swf
/
scripts
/
STC9
/
IO
/
CKeyboard.as
< prev
Wrap
Text File
|
2011-08-19
|
36KB
|
617 lines
package STC9.IO
{
import flash.display.InteractiveObject;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.KeyboardEvent;
public class CKeyboard extends EventDispatcher
{
public static var mKeyIDs:Array;
public static var mLastKeyCodes:Array;
public static var mMonitorItems:Object;
public static var mItems:Array;
public static const KEYDOWN:String = "KEYDOWN";
public static var mKeycodeDown:int;
public static var mKeyNameToKeyID:Object;
public static var mActive:Boolean = false;
public static var mKeyNames:Array;
public static var mKeyTable:Object;
{
if(true)
{
KEYDOWN = "KEYDOWN";
mActive = false;
}
}
private var mDispatchEvents:Boolean;
private var mFocusObject:InteractiveObject;
public function CKeyboard(param1:InteractiveObject, param2:Boolean = false)
{
if(true)
{
super();
if(true)
{
mDispatchEvents = param2;
if(true)
{
mFocusObject = param1;
if(true)
{
mMonitorItems = new Object();
if(true)
{
mLastKeyCodes = new Array();
if(true)
{
if(mActive)
{
if(true)
{
if(!mFocusObject.hasEventListener(KeyboardEvent.KEY_DOWN))
{
}
}
}
mFocusObject.addEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown);
}
mFocusObject.addEventListener(KeyboardEvent.KEY_UP,reportKeyUp);
}
mFocusObject.addEventListener(Event.DEACTIVATE,e_DEACTIVATE);
}
mFocusObject.addEventListener(Event.ACTIVATE,e_ACTIVATE);
}
SetupKeyTables();
}
mActive = true;
}
}
private static function GetKeyCode(param1:*) : int
{
if(typeof param1 == "string")
{
return mKeyTable[param1];
}
return param1;
}
public static function IsDown(param1:*) : Boolean
{
return mItems[GetKeyCode(param1)].mDown;
}
public static function IsReleased(param1:*) : int
{
var _loc2_:Number = NaN;
if(true)
{
_loc2_ = mItems[GetKeyCode(param1)].mReleased;
mItems[GetKeyCode(param1)].mReleased = 0;
}
return _loc2_;
}
public static function IsDownAuto(param1:*) : Number
{
var _loc2_:Number = NaN;
_loc2_ = mItems[GetKeyCode(param1)].mDownAuto;
mItems[GetKeyCode(param1)].mDownAuto = 0;
return _loc2_;
}
public static function CompareString(param1:String) : Boolean
{
var _loc2_:* = null;
var _loc3_:Number = NaN;
var _loc4_:int = 0;
if(mLastKeyCodes.length < param1.length + 1)
{
return false;
}
_loc2_ = param1;
_loc3_ = mLastKeyCodes.length - (param1.length + 1);
for each(_loc4_ in mLastKeyCodes.slice(_loc3_,_loc3_ + param1.length))
{
if(GetKeyCode(_loc2_.charAt(0)) != _loc4_)
{
return false;
}
§§push(_loc2_);
if(true)
{
§§push(§§pop().slice(1));
}
_loc2_ = §§pop();
}
return true;
}
public static function IsPressed(param1:*) : int
{
var _loc2_:* = 0;
var _loc3_:CKey = null;
var _loc4_:Number = NaN;
§§push(GetKeyCode(param1));
if(true)
{
§§push(int(§§pop()));
}
_loc2_ = §§pop();
_loc3_ = mItems[_loc2_];
_loc4_ = mItems[_loc2_].mPressed;
mItems[_loc2_].mPressed = 0;
return _loc4_;
}
private function reportKeyDown(param1:KeyboardEvent) : void
{
if(true)
{
if(mItems[param1.keyCode])
{
if(true)
{
mMonitorItems["key" + param1.keyCode] = mItems[param1.keyCode];
if(true)
{
mItems[param1.keyCode].RegisterAsDown();
mKeycodeDown = param1.keyCode;
}
if(!mDispatchEvents)
{
}
§§goto(addr60);
}
dispatchEvent(new Event(KEYDOWN));
}
}
addr60:
}
private function SetupKeyTables() : void
{
var _loc1_:* = 0;
var _loc2_:* = null;
if(true)
{
mKeyTable = new Object();
_loc1_ = 65;
}
loop0:
while(true)
{
§§push(_loc1_);
if(true)
{
§§push(65);
if(true)
{
§§push(§§pop() + 26);
if(true)
{
if(§§pop() >= §§pop())
{
if(true)
{
§§push(48);
if(true)
{
_loc1_ = §§pop();
if(true)
{
loop1:
while(true)
{
§§push(_loc1_);
if(true)
{
§§push(48);
if(true)
{
§§push(§§pop() + 10);
loop12:
while(true)
{
if(§§pop() < §§pop())
{
mKeyTable[String.fromCharCode(_loc1_)] = _loc1_;
if(true)
{
_loc1_++;
if(true)
{
continue loop1;
}
addr444:
addr455:
while(true)
{
§§push(_loc1_);
addr456:
addr458:
addr462:
loop8:
while(true)
{
§§push(256);
addr457:
while(true)
{
if(§§pop() >= §§pop())
{
break loop8;
}
addr445:
mKeyNames[_loc1_] = "";
break loop12;
}
}
mKeyNameToKeyID = new Object();
break loop0;
}
}
break;
}
if(true)
{
mKeyTable["F1"] = 112;
if(true)
{
mKeyTable["F2"] = 113;
if(true)
{
mKeyTable["F3"] = 114;
if(true)
{
mKeyTable["F4"] = 115;
if(true)
{
mKeyTable["F5"] = 116;
if(true)
{
mKeyTable["F6"] = 117;
if(true)
{
mKeyTable["F7"] = 118;
if(true)
{
mKeyTable["F8"] = 119;
if(true)
{
mKeyTable["F9"] = 120;
if(true)
{
mKeyTable["F10"] = 121;
if(true)
{
mKeyTable["F11"] = 122;
if(true)
{
mKeyTable["F12"] = 123;
if(true)
{
mKeyTable["F13"] = 124;
if(true)
{
mKeyTable["F14"] = 125;
if(true)
{
mKeyTable["F15"] = 126;
if(true)
{
mKeyTable["NUM_LOCK"] = 144;
if(true)
{
mKeyTable["SCR_LOCK"] = 145;
if(true)
{
mKeyTable["PAUSE"] = 19;
if(true)
{
mKeyTable["NUMPAD_0"] = 96;
if(true)
{
mKeyTable["NUMPAD_1"] = 97;
if(true)
{
mKeyTable["NUMPAD_2"] = 98;
if(true)
{
mKeyTable["NUMPAD_3"] = 99;
if(true)
{
mKeyTable["NUMPAD_4"] = 100;
if(true)
{
mKeyTable["NUMPAD_5"] = 101;
if(true)
{
mKeyTable["NUMPAD_6"] = 102;
if(true)
{
mKeyTable["NUMPAD_7"] = 103;
if(true)
{
mKeyTable["NUMPAD_8"] = 104;
if(true)
{
mKeyTable["NUMPAD_9"] = 105;
if(true)
{
mKeyTable["NUMPAD_ADD"] = 107;
if(true)
{
mKeyTable["NUMPAD_DECIMAL"] = 110;
if(true)
{
mKeyTable["NUMPAD_DIVIDE"] = 111;
if(true)
{
mKeyTable["NUMPAD_ENTER"] = 108;
if(true)
{
mKeyTable["NUMPAD_MULTIPLY"] = 106;
if(true)
{
mKeyTable["NUMPAD_SUBTRACT"] = 109;
if(true)
{
mKeyTable["COLON"] = 186;
mKeyTable["EQUALS"] = 187;
}
mKeyTable["MINUS"] = 189;
}
mKeyTable["FWD_SLASH"] = 191;
}
mKeyTable["LSQR_BRACKET"] = 219;
}
mKeyTable["RSQR_BRACKET"] = 221;
}
mKeyTable["BACK_SLASH"] = 220;
}
mKeyTable["COMMA"] = 188;
}
mKeyTable["DOT"] = 190;
}
mKeyTable["HOME"] = 36;
}
mKeyTable["INSERT"] = 45;
}
mKeyTable["PAGE_DOWN"] = 34;
}
mKeyTable["PAGE_UP"] = 33;
}
mKeyTable["SHIFT"] = 16;
}
mKeyTable["SPACE"] = 32;
}
mKeyTable["TAB"] = 9;
}
mKeyTable["QUOTE"] = 34;
}
mKeyTable["BACKSPACE"] = 8;
}
mKeyTable["CAPS_LOCK"] = 20;
}
mKeyTable["CONTROL"] = 17;
}
mKeyTable["DELETE"] = 46;
}
mKeyTable["END"] = 35;
}
mKeyTable["ENTER"] = 13;
}
mKeyTable["RETURN"] = 13;
}
mKeyTable["ESCAPE"] = 27;
}
mKeyTable["UP"] = 38;
}
mKeyTable["LEFT"] = 37;
}
mKeyTable["DOWN"] = 40;
}
mKeyTable["RIGHT"] = 39;
}
mItems = new Array();
}
§§push(0);
if(true)
{
_loc1_ = §§pop();
addr423:
while(true)
{
§§push(_loc1_);
}
addr431:
}
loop4:
while(true)
{
§§push(256);
addr433:
while(§§pop() < §§pop())
{
mItems.push(new CKey(_loc1_));
while(true)
{
_loc1_++;
§§goto(addr431);
}
continue loop4;
}
addr434:
addr438:
addr442:
mKeyNames = new Array();
mKeyIDs = new Array();
break loop1;
}
}
§§goto(addr423);
}
§§goto(addr430);
}
§§goto(addr423);
}
§§goto(addr434);
}
§§goto(addr438);
}
§§goto(addr442);
}
loop3:
while(true)
{
mKeyIDs[_loc1_] = "";
addr454:
while(true)
{
_loc1_++;
§§goto(addr455);
continue loop3;
}
}
addr85:
}
§§goto(addr433);
}
break;
}
_loc1_ = §§pop();
§§goto(addr444);
}
§§goto(addr454);
}
§§goto(addr456);
}
§§goto(addr444);
}
else
{
mKeyTable[String.fromCharCode(_loc1_)] = _loc1_;
if(true)
{
mKeyTable[String.fromCharCode(_loc1_ + 32)] = _loc1_;
if(true)
{
_loc1_++;
if(true)
{
continue;
}
§§goto(addr458);
}
§§goto(addr462);
}
§§goto(addr507);
}
}
§§goto(addr85);
}
§§goto(addr457);
}
break;
}
for(_loc2_ in mKeyTable)
{
mKeyNames[mKeyTable[_loc2_]] = TReplace(_loc2_);
mKeyNameToKeyID[mKeyNames[mKeyTable[_loc2_]]] = _loc2_;
mKeyIDs[mKeyTable[_loc2_]] = _loc2_;
}
addr507:
}
private function e_DEACTIVATE(param1:Event) : void
{
var _loc2_:CKey = null;
for each(_loc2_ in mMonitorItems)
{
_loc2_.Clear();
}
mMonitorItems = new Object();
}
private function reportKeyUp(param1:KeyboardEvent) : void
{
if(mLastKeyCodes.push(param1.keyCode) > 20)
{
mLastKeyCodes = mLastKeyCodes.slice(mLastKeyCodes.length - 20);
}
if(mItems[param1.keyCode])
{
delete mMonitorItems["key" + param1.keyCode];
mItems[param1.keyCode].RegisterAsUp();
}
}
private function e_ACTIVATE(param1:Event) : void
{
}
public function get _CLASSID_() : String
{
return "CKeyboard";
}
override public function toString() : String
{
return _CLASSID_;
}
public function Clear() : void
{
var _loc1_:CKey = null;
for each(_loc1_ in mItems)
{
_loc1_.Clear();
}
mLastKeyCodes = new Array();
}
private function TReplace(param1:String) : String
{
var _loc2_:RegExp = null;
_loc2_ = /_/;
§§push(param1);
if(true)
{
param1 = §§pop().replace(_loc2_," ").toLowerCase();
§§push(param1);
}
return §§pop();
}
public function get _BASECLASSID_() : String
{
return "CKeyboard";
}
public function Dispose() : void
{
mFocusObject.removeEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown);
mFocusObject.removeEventListener(KeyboardEvent.KEY_UP,reportKeyUp);
mFocusObject.removeEventListener(Event.DEACTIVATE,e_DEACTIVATE);
mFocusObject.removeEventListener(Event.ACTIVATE,e_ACTIVATE);
mActive = false;
}
}
}